// 版权所有2010 Go作者。保留所有权利。
// 此源代码的使用受BSD样式
// 许可证的约束，该许可证可以在许可证文件中找到。

package cmplx

import "math"

// 下面的原始C代码、长注释和常量
// 来自http:
// go代码是原始C.
// 
// Cephes数学库发行版2.8:2000年6月
// 版权所有1984、1987、1989、1992、2000作者Stephen L.Moshier 
// 
// http:
// 本档案中的一些软件可能来自《数学函数的方法和程序》（Prentice Hall或Simon&Schuster 
// International，1989）一书，也可能来自Cephes数学图书馆，一本
// 商业产品。无论哪种情况，它都是作者的版权。
// 您在这里看到的内容可以免费使用，但不提供任何支持或保证。
// 
// 本书中两个已知的印刷错误在这里的
// 伽马函数和不完整的beta 
// 积分的源代码列表中修复。
// 
// Stephen L.Moshier 
// moshier@na-网。奥尔。gov 

// 复自然对数
// 
// 说明：
// 
// 将复对数返回到基数e（2.718…）关于
// 复参数z.
// 
// 如果
// z=x+iy，r=sqrt（x**2+y**2），
// 那么
// w=log（r）+i arctan（y/x）。
// 
// 反正切范围从-PI到+PI。
// 
// 准确度：
// 
// 相对误差：
// 算术域#试验峰值均方根数
// DEC-10，+10 7000 8.5e-17 1.9e-17 
// IEEE-10，+10 300000 5.0e-15 1.1e-16 
// 
// 在1+i0附近的z可以观察到更大的相对误差。
// 在IEEE算法中，峰值绝对误差为5.2e-16，rms 
// 绝对误差为1.0e-16。

// Log返回x的自然对数。
func Log(x complex128) complex128 {
	return complex(math.Log(Abs(x)), Phase(x))
}

// Log10返回x的十进制对数。
func Log10(x complex128) complex128 {
	z := Log(x)
	return complex(math.Log10E*real(z), math.Log10E*imag(z))
}
